do_outp(env, req->addr, req->size, req->data);
} else {
for (i = 0; i < req->count; i++) {
- unsigned long tmp;
+ unsigned long tmp = 0;
read_physical((target_phys_addr_t) req->data
+ (sign * i * req->size),
}
}
} else {
- unsigned long tmp;
+ target_ulong tmp;
if (req->dir == IOREQ_READ) {
for (i = 0; i < req->count; i++) {
void cpu_ioreq_and(CPUState *env, ioreq_t *req)
{
- unsigned long tmp1, tmp2;
+ target_ulong tmp1, tmp2;
if (req->data_is_ptr != 0)
hw_error("expected scalar value");
read_physical(req->addr, req->size, &tmp1);
if (req->dir == IOREQ_WRITE) {
- tmp2 = tmp1 & (unsigned long) req->data;
+ tmp2 = tmp1 & (target_ulong) req->data;
write_physical(req->addr, req->size, &tmp2);
}
req->data = tmp1;
void cpu_ioreq_add(CPUState *env, ioreq_t *req)
{
- unsigned long tmp1, tmp2;
+ target_ulong tmp1, tmp2;
if (req->data_is_ptr != 0)
hw_error("expected scalar value");
read_physical(req->addr, req->size, &tmp1);
if (req->dir == IOREQ_WRITE) {
- tmp2 = tmp1 + (unsigned long) req->data;
+ tmp2 = tmp1 + (target_ulong) req->data;
write_physical(req->addr, req->size, &tmp2);
}
req->data = tmp1;
void cpu_ioreq_sub(CPUState *env, ioreq_t *req)
{
- unsigned long tmp1, tmp2;
+ target_ulong tmp1, tmp2;
if (req->data_is_ptr != 0)
hw_error("expected scalar value");
read_physical(req->addr, req->size, &tmp1);
if (req->dir == IOREQ_WRITE) {
- tmp2 = tmp1 - (unsigned long) req->data;
+ tmp2 = tmp1 - (target_ulong) req->data;
write_physical(req->addr, req->size, &tmp2);
}
req->data = tmp1;
void cpu_ioreq_or(CPUState *env, ioreq_t *req)
{
- unsigned long tmp1, tmp2;
+ target_ulong tmp1, tmp2;
if (req->data_is_ptr != 0)
hw_error("expected scalar value");
read_physical(req->addr, req->size, &tmp1);
if (req->dir == IOREQ_WRITE) {
- tmp2 = tmp1 | (unsigned long) req->data;
+ tmp2 = tmp1 | (target_ulong) req->data;
write_physical(req->addr, req->size, &tmp2);
}
req->data = tmp1;
void cpu_ioreq_xor(CPUState *env, ioreq_t *req)
{
- unsigned long tmp1, tmp2;
+ target_ulong tmp1, tmp2;
if (req->data_is_ptr != 0)
hw_error("expected scalar value");
read_physical(req->addr, req->size, &tmp1);
if (req->dir == IOREQ_WRITE) {
- tmp2 = tmp1 ^ (unsigned long) req->data;
+ tmp2 = tmp1 ^ (target_ulong) req->data;
write_physical(req->addr, req->size, &tmp2);
}
req->data = tmp1;
void __handle_ioreq(CPUState *env, ioreq_t *req)
{
- if (!req->data_is_ptr && (req->dir == IOREQ_WRITE)) {
- /* Clamp data operand to size of a long. */
- if (req->size < sizeof(long))
- req->data &= (1UL << (8 * req->size)) - 1;
- req->data = (unsigned long)req->data;
- }
+ if (!req->data_is_ptr && (req->dir == IOREQ_WRITE) &&
+ (req->size < sizeof(target_ulong)))
+ req->data &= ((target_ulong)1 << (8 * req->size)) - 1;
switch (req->type) {
case IOREQ_TYPE_PIO: